
from rest_framework.response import Response
from rest_framework.views import exception_handler
from django.db import DatabaseError
import logging

logger = logging.getLogger("django")  # 这个名字和配置文件里面那个一致

# 新增一些其他模块的异常，数据库的异常

# 自定义异常处理
def custom_exception_handler(exc, context):
    """

    :param exc: 本次请求发生异常的信息
    :param context: 本次请求发送异常的执行上下文 [发生异常的时间，行号]
    :return:
    """
    response = exception_handler(exc,context)
    if response is None:
        """
            存在两种情况：要么没出错，要么就是django或者rest_framework不能处理 
        """
        view = context["view"]
        # 处理数据库异常
        if isinstance(exc,DatabaseError):
            logger.error('[%s] %s'%(view,exc))
            response =Response({"message":"服务器内部错误"})
        return response